Kotlin Koans 35 Delegates

目次

Delegates (Playground)

Description

You may declare your own delegates. Implement the methods of the class 'EffectiveDate' so it can be delegated to. Store only the time in milliseconds in 'timeInMillis' property.

Use the extension functions MyDate.toMillis() and Long.toDate(), defined at MyDate.kt

委譲 は自分で宣言することができます。委譲ができるように、'EffectiveDate' を実装してください。ミリ秒単位の時間のみを 'timeInMillis' プロパティに格納してください。

MyDate.ktに定義されている拡張関数MyDate.toMillis()およびLong.toDate()を使用してください。

Code

import kotlin.properties.ReadWriteProperty
import kotlin.reflect.KProperty

class D {
    var date: MyDate by EffectiveDate()
}

class EffectiveDate<R> : ReadWriteProperty<R, MyDate> {

    var timeInMillis: Long? = null

    override fun getValue(thisRef: R, property: KProperty<*>): MyDate {
        return timeInMillis!!.toDate()
    }

    override fun setValue(thisRef: R, property: KProperty<*>, value: MyDate) {
        timeInMillis = value.toMillis()
    }
}

Memo

← Posts